<?php
/**
 * Klasse zur Installation von Datensaetzen, welche in XML gespeichert sind
 *
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2013 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 *
 * */


Class Yapary_Database_XmlInstall
{
    private $oSql        = NULL;
    private $oXmlLoader  = NULL;
    private $xml         = NULL;
    private $arrContent  = array();


	function __construct (Yapary_Database_Sql $_oSql, $xmlFilePath)
	{
	    if (!file_exists($xmlFilePath)) {
	        trigger_error('File <b>'.$xmlFilePath.'</b> does not exist', E_USER_ERROR);
	    }

	    $this->oSql       = $_oSql;
	    $this->oXmlLoader = new Yapary_XmlLoader();
	    $this->xml        = $this->oXmlLoader->getFromFile($xmlFilePath);
	}


	/**
	 * Laedt die Daten in die Datenbanktabelle
	 * @param $arrRelationName	: Namen der Relationen in der Folge, wie sie in der CSV-Datei stehen
	 * */
	public function install ($iFrom = NULL, $iTo = NULL)
	{
	    $i        = 0;
        $success  = 0;


		foreach ($this->xml as $dbTableName => $val) {
			$i++;

			// Wenn Datensatz nicht im gueltigen Bereich, gehe zum naechsten Datensatz
			if ($iFrom != NULL && $iFrom > $i) {
			    continue;
			}
			if ($iTo != NULL && $iTo < $i) {
			    break;
			}

			$arrTmp   = (array) $val;
			$paramKey = '';
			$paramVal = '';

			// Werte aneinander fuegen und Korrektur fuer letzten Komma durchfuehren
			while(list($key,$val) = each($arrTmp)) {
			    $paramKey .= $key.',';
			    $paramVal .= "'".$val."',";
			}
			$paramKey = substr($paramKey, 0, strlen($paramKey)-1);
			$paramVal = substr($paramVal, 0, strlen($paramVal)-1);


			if (!$this->oSql->request("INSERT INTO $dbTableName ($paramKey) VALUES ($paramVal)")) {
			    trigger_error('Error while install dataset '.$i.'', E_USER_NOTICE);
    			echo $paramKey;
    			echo ' == ';
    			echo $paramVal;
    			echo '<br />';
			} else {
			    $success++;
			}
		}

		return $success;
	}


}


?>